package controller;

import common.Result;
import org.springframework.web.bind.annotation.*;
import vo.TempFileVo;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

@RestController
@RequestMapping("/file")
@CrossOrigin
public class FileController {


    /**
     * 列出当前系统的盘符或根目录
     * @return
     */

    @GetMapping("/root")
    public Result Listroot(){
        File[] files =File.listRoots();
        return  Result.ok("查询成功",files);
    }

    /**
     * 根据具体的path，查询当前的path有哪些文件
     * http://localhost:3000/file/listFiles?path=D:\\
     * @return
     */


    @PostMapping("/listFiles")
    public Result listFiles(@RequestBody TempFileVo tempFileVo){
        File file=new File(tempFileVo.getPath());
        if (file.isDirectory()){
            File[] files =file.listFiles();
            return  Result.ok("查询目录成功",files);
        }else {
            return  Result.fail("这是一个具体的文件，不能让你再继续了",null);
        }
    }

        /**
         * 优化方法 tempFileVo
         *
         */
//    @PostMapping("/listFiles2")
//    public Result listFiles2(@RequestBody TempFileVo tempFileVo){
//            System.out.println("需要遍历的目录是："+tempFileVo.getPath());
//            File file=new File(tempFileVo.getPath());
//            if (file.isDirectory()){
//                File[] files =file.listFiles();
//                //把file变成FileVo   这样file就标识 1，表示文件 0表示文件夹
//                List<FileVo> filevoList = Arrays.stream(files).map(f->new FileVo(f.getAbsolutePath(),f.isFile()?"1":"0")).collect(Collectors.toList());
//                return Result.ok("查询目录成功",fileVoList);
//            }else {
//                return Result.ok("这个文件是一个具体的文件",null);
//            }
//            }
//


    /**
     * 展示文件的具体内容（如果是一个图片，显示图片，如果是一个文本内容，展示文本，如果是其他，弹框显示可执行文件，拒绝执行）
     * @param  tempFileVo
     * @return
     */

    @PostMapping("/showFile")
    public Result showFile(@RequestBody  TempFileVo tempFileVo){
        // 处理文件展示的业务逻辑
        return Result.ok("文件展示成功", null);
    }
}



